gtk-demo: Remove the popover demo
authorMatthias Clasen <mclasen@redhat.com>
Wed, 1 Apr 2020 19:44:22 +0000 (15:44 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 1 Apr 2020 19:45:13 +0000 (15:45 -0400)
It doesn't work anymore, since popovers now need
support in the parent, and we don't really need
a demo just for popovers. They are used everywhere
already.

Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/2429
demos/gtk-demo/demo.gresource.xml
demos/gtk-demo/meson.build
demos/gtk-demo/popover.c [deleted file]
demos/gtk-demo/popover.ui [deleted file]

index 7e4046cb6aaeab7347a3da091756371487d145f5..f6477002ce48858f2c5186084a08f5a0f84d1d1b 100644 (file)
     <file>peg_solitaire.c</file>
     <file>pickers.c</file>
     <file>pixbufs.c</file>
-    <file>popover.c</file>
     <file>printing.c</file>
     <file>revealer.c</file>
     <file>rotated_text.c</file>
     <file>messages.txt</file>
     <file>apple-red.png</file>
   </gresource>
-  <gresource prefix="/popover">
-    <file>popover.ui</file>
-  </gresource>
   <gresource prefix="/glarea">
     <file>glarea-gl.fs.glsl</file>
     <file>glarea-gl.vs.glsl</file>
index 08694a73557018ec3a9a72aa36e42da9ee6fb23c..8c2392c29ea1e37e46c9443bbbf898ff6fb59ec3 100644 (file)
@@ -54,7 +54,6 @@ demos = files([
   'peg_solitaire.c',
   'pickers.c',
   'pixbufs.c',
-  'popover.c',
   'printing.c',
   'revealer.c',
   'rotated_text.c',
diff --git a/demos/gtk-demo/popover.c b/demos/gtk-demo/popover.c
deleted file mode 100644 (file)
index f0ab27d..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-/* Popovers
- *
- * A bubble-like window containing contextual information or options.
- * GtkPopovers can be attached to any widget, and will be displayed
- * within the same window, but on top of all its content.
- */
-
-#include <gtk/gtk.h>
-
-static void
-toggle_changed_cb (GtkToggleButton *button,
-                   GtkWidget       *popover)
-{
-  gtk_widget_set_visible (popover,
-                          gtk_toggle_button_get_active (button));
-}
-
-static GtkWidget *
-create_popover (GtkWidget       *parent,
-                GtkWidget       *child,
-                GtkPositionType  pos)
-{
-  GtkWidget *popover;
-
-  popover = gtk_popover_new ();
-  gtk_widget_set_parent (popover, parent);
-  gtk_popover_set_position (GTK_POPOVER (popover), pos);
-  gtk_container_add (GTK_CONTAINER (popover), child);
-  gtk_widget_set_margin_start (child, 6);
-  gtk_widget_set_margin_end (child, 6);
-  gtk_widget_set_margin_top (child, 6);
-  gtk_widget_set_margin_bottom (child, 6);
-  gtk_widget_show (child);
-
-  return popover;
-}
-
-static GtkWidget *
-create_complex_popover (GtkWidget       *parent,
-                        GtkPositionType  pos)
-{
-  GtkWidget *popover, *window, *content;
-  GtkBuilder *builder;
-
-  builder = gtk_builder_new ();
-  gtk_builder_add_from_resource (builder, "/popover/popover.ui", NULL);
-  window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
-  content = gtk_bin_get_child (GTK_BIN (window));
-  g_object_ref (content);
-  gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (content)),
-                        content);
-  gtk_widget_destroy (window);
-  g_object_unref (builder);
-
-  popover = create_popover (parent, content, GTK_POS_BOTTOM);
-  g_object_unref (content);
-
-  return popover;
-}
-
-static void
-entry_size_allocate_cb (GtkEntry *entry,
-                        int       width,
-                        int       height,
-                        int       baseline,
-                        gpointer  user_data)
-{
-  GtkEntryIconPosition popover_pos;
-  GtkPopover *popover = user_data;
-  cairo_rectangle_int_t rect;
-
-  if (gtk_widget_is_visible (GTK_WIDGET (popover)))
-    {
-      popover_pos =
-        GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (entry),
-                                             "popover-icon-pos"));
-      gtk_entry_get_icon_area (entry, popover_pos, &rect);
-      gtk_popover_set_pointing_to (GTK_POPOVER (popover), &rect);
-    }
-}
-
-static void
-entry_icon_press_cb (GtkEntry             *entry,
-                     GtkEntryIconPosition  icon_pos,
-                     gpointer              user_data)
-{
-  GtkWidget *popover = user_data;
-  cairo_rectangle_int_t rect;
-
-  gtk_entry_get_icon_area (entry, icon_pos, &rect);
-  gtk_popover_set_pointing_to (GTK_POPOVER (popover), &rect);
-  gtk_widget_show (popover);
-
-  g_object_set_data (G_OBJECT (entry), "popover-icon-pos",
-                     GUINT_TO_POINTER (icon_pos));
-}
-
-static void
-day_selected_cb (GtkCalendar *calendar,
-                 gpointer     user_data)
-{
-  cairo_rectangle_int_t rect;
-  GtkWidget *popover;
-  GdkEvent *event;
-  gdouble x, y;
-  GtkWidget *widget;
-
-  event = gtk_get_current_event ();
-
-  if (gdk_event_get_event_type (event) != GDK_BUTTON_PRESS)
-    return;
-
-  gdk_event_get_position (event, &x, &y);
-  widget = gtk_native_get_for_surface (gdk_event_get_surface (event));
-  gtk_widget_translate_coordinates (widget,
-                                    GTK_WIDGET (calendar),
-                                    x, y,
-                                    &rect.x, &rect.y);
-  rect.width = rect.height = 1;
-
-  popover = create_popover (GTK_WIDGET (calendar),
-                            gtk_entry_new (),
-                            GTK_POS_BOTTOM);
-  gtk_popover_set_pointing_to (GTK_POPOVER (popover), &rect);
-
-  gtk_widget_show (popover);
-
-  gdk_event_unref (event);
-}
-
-GtkWidget *
-do_popover (GtkWidget *do_widget)
-{
-  static GtkWidget *window = NULL;
-  GtkWidget *popover, *box, *widget;
-
-  if (!window)
-    {
-      window = gtk_window_new ();
-      gtk_window_set_title (GTK_WINDOW (window), "Popovers");
-      box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 24);
-      gtk_widget_set_margin_start (box, 24);
-      gtk_widget_set_margin_end (box, 24);
-      gtk_widget_set_margin_top (box, 24);
-      gtk_widget_set_margin_bottom (box, 24);
-      gtk_container_add (GTK_CONTAINER (window), box);
-
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
-
-      widget = gtk_toggle_button_new_with_label ("Button");
-      popover = create_popover (widget,
-                                gtk_label_new ("This popover does not grab input"),
-                                GTK_POS_TOP);
-      gtk_popover_set_autohide (GTK_POPOVER (popover), FALSE);
-      g_signal_connect (widget, "toggled",
-                        G_CALLBACK (toggle_changed_cb), popover);
-      gtk_container_add (GTK_CONTAINER (box), widget);
-
-      widget = gtk_entry_new ();
-      popover = create_complex_popover (widget, GTK_POS_TOP);
-      gtk_entry_set_icon_from_icon_name (GTK_ENTRY (widget),
-                                         GTK_ENTRY_ICON_PRIMARY, "edit-find");
-      gtk_entry_set_icon_from_icon_name (GTK_ENTRY (widget),
-                                         GTK_ENTRY_ICON_SECONDARY, "edit-clear");
-
-      g_signal_connect (widget, "icon-press",
-                        G_CALLBACK (entry_icon_press_cb), popover);
-      g_signal_connect (widget, "size-allocate",
-                        G_CALLBACK (entry_size_allocate_cb), popover);
-      gtk_container_add (GTK_CONTAINER (box), widget);
-
-      widget = gtk_calendar_new ();
-      g_signal_connect (widget, "day-selected",
-                        G_CALLBACK (day_selected_cb), NULL);
-      gtk_container_add (GTK_CONTAINER (box), widget);
-    }
-
-  if (!gtk_widget_get_visible (window))
-    gtk_widget_show (window);
-  else
-    gtk_widget_destroy (window);
-
-  return window;
-}
diff --git a/demos/gtk-demo/popover.ui b/demos/gtk-demo/popover.ui
deleted file mode 100644 (file)
index 956302d..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
-  <object class="GtkListStore" id="liststore1">
-    <columns>
-      <column type="gchararray"/>
-    </columns>
-    <data>
-      <row>
-        <col id="0" translatable="yes">Item 1</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Item 2</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Item 3</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Item 4</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Item 5</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Item 6</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Item 7</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Item 8</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Item 9</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">Item 10</col>
-      </row>
-    </data>
-  </object>
-  <object class="GtkWindow" id="window">
-    <child>
-      <object class="GtkBox" id="box">
-        <property name="orientation">vertical</property>
-        <property name="spacing">6</property>
-        <child>
-          <object class="GtkEntry" id="entry1">
-            <property name="can-focus">1</property>
-            <property name="primary-icon-name">edit-find</property>
-            <property name="secondary-icon-name">edit-clear</property>
-          </object>
-        </child>
-        <child>
-          <object class="GtkScrolledWindow" id="scrolledwindow1">
-            <property name="can-focus">1</property>
-            <property name="shadow-type">in</property>
-            <property name="max-content-height">100</property>
-            <child>
-              <object class="GtkTreeView" id="treeview1">
-                <property name="can-focus">1</property>
-                <property name="vexpand">1</property>
-                <property name="model">liststore1</property>
-                <property name="headers-visible">0</property>
-                <property name="enable-search">0</property>
-                <property name="search-column">2</property>
-                <child internal-child="selection">
-                  <object class="GtkTreeSelection" id="treeview-selection1"/>
-                </child>
-                <child>
-                  <object class="GtkTreeViewColumn" id="column1">
-                    <child>
-                      <object class="GtkCellRendererText" id="cellrenderer1"/>
-                      <attributes>
-                        <attribute name="text">0</attribute>
-                      </attributes>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-          </object>
-        </child>
-      </object>
-    </child>
-  </object>
-</interface>